<h:panelGroup>
	<a4j:keepAlive beanName="rsBean2" />
	<h:form>
		<h:inputText size="4" label="First Addent" value="#{rsBean2.addent1}">
			<a4j:support event="onkeyup" reRender="btn2" />
		</h:inputText>
		<h:outputText value="+"/>
		<h:inputText   size="4" label="Second Addent"  value="#{rsBean2.addent2}">
				<a4j:support event="onkeyup" reRender="btn2" />						
		</h:inputText>
		<a4j:commandButton style="margin:0 5px" id="btn2" action="#{rsBean2.doSum}" 
			 value="=" reRender="sum2"
			 disabled="#{rsBean2.addent1 == null or rsBean2.addent2==null}"/>
		<h:outputText id="sum2" value="#{rsBean2.sum}" />
	</h:form>
	<a4j:outputPanel ajaxRendered="true">
		<h:messages />
	</a4j:outputPanel>
</h:panelGroup>

...

package org.richfaces.demo.ajaxSamples;

public class rsBean {
	private Integer addent1;
	private Integer addent2;
	private Integer sum;
	
	public String doSum() {
		sum = new Integer((addent1 != null ? addent1.intValue() : 0) + (addent2 != null ? addent2.intValue() : 0));
		return null;
	}
	
	//getters and setters skipped
}